package org.jmc.refmanager.domain.dao;

import java.util.List;

import org.jmc.refmanager.domain.model.Change;
import org.jmc.refmanager.domain.model.Change.Operation;
import org.jmc.refmanager.domain.model.Change.TaskStatus;

public interface ChangeDao extends GenericDao<Change, Integer> {

	/**
	 * Retourne les modifications d'objet concernant mon groupe
	 * dans les etats souhaites
	 * 
	 * @param matricule
	 * @param inStatus
	 * 
	 * @return
	 */
	public List<Change> findMyGroupTasks(QueryParam<Change> params, String matricule, List<TaskStatus> inStatus, List<Operation> inOperation);
	public Integer countMyGroupTasks(String matricule, List<TaskStatus> inStatus, List<Operation> inOperation);

	/**
	 * Retourne les modifications d'objet me concernant
	 * 
	 * @param matricule
	 * 
	 * @return
	 */
	public List<Change> findMyTasks(QueryParam<Change> params, String matricule);
	public Integer countMyTasks(String matricule);

	/**
	 * Recherche les teches non terminees pour une direction de validation donnee.
	 * 
	 * @param directionId
	 * @return
	 */
	public List<Change> findGroupTasks(Integer directionId);
	
}
